在以往要使用 ajax,舊的方式可能是使用 xhr,但他有幾項使用上的缺點 :
在新版 HTML5 API 中 chrome & firefox 實作了 fetch api,主要解決以上的困擾
使用上只需要傳入,req 需要的 header & body
fetch({
url: '....',
method: 'GET'
})
// or
fetch({
url: '....',
method: 'POST',
headers: {...}
body: {...}, // Method GET & HEADER 沒有 body 因為參數是用 url 傳遞
})
詳細 api :
而 fetch 本身使用 promise 物件設計,結構會常這樣
fetch(URL)
.then(res => res.json())
.then(res => {
// promise resolve
...
})
.catch(err => {
// promise reject
...
})
值得注意的是 fetch resolve 成功獲得資訊後,.then 是回傳 resonse 物件,以下是常用屬性
Response 其他屬性
最後 response 回傳回來是一個 ReadableStream
二進位物件,不能直接使用必須,使用轉換格式的 function
arrayBuffer()
blob()
- ajax 檔案 or 圖片時可以使用,但不常這麼做formData()
- Submit 表單資訊時做使用,以 key - value 格式為主json()
- 常用text()
- 純文字